package mysql

import (
	"e_mall_server/common"
	"e_mall_server/models"
	"errors"
	"go.uber.org/zap"
)

/**
 * @Author: zhaobin
 * @Description TODO
 * @Date: 2022-04-26 1:05
 */

// Login 用户登录信息验证
func Login(p *models.ManagerLoginParam) (manager models.Manager, err error) {
	zap.L().Debug("mysql.Login", zap.Any("p", p))
	err = db.Where("username = ? and password = ?", p.Username, common.Md5(p.Password)).First(&manager).Error
	zap.L().Debug("mysql.Login", zap.Any("err", err))
	return
}

// GetManagerList 获取管理员列表接口
func GetManagerList() ([]models.Manager, error) {
	var ManagerList []models.Manager
	if err := db.Preload("Role").Find(&ManagerList).Error; err != nil {
		return nil, err
	}
	return ManagerList, nil
}

// AddManager 添加管理员信息
func AddManager(manager *models.Manager) error {
	zap.L().Debug("mysql.AddManager()", zap.Any("管理员信息", manager))
	// 将密码进行加密
	manager.Password = common.Md5(manager.Password)
	// 进行数据库添加操作
	return db.Create(manager).Error
}

// UpdateManager 修改管理员信息
func UpdateManager(manager *models.Manager) int64 {
	// 进行数据库修改操作
	return db.Model(&manager).Updates(&manager).RowsAffected
}

// DeleteManagerById 通过管理员id删除管理员数据
func DeleteManagerById(id int64) int64 {
	return db.Delete(&models.Manager{Id: id}).RowsAffected
}

// CheckManagerExist 检查管理员是否存在
func CheckManagerExist(username string) error {
	var managerList []models.Manager
	db.Where("username = ?", username).Find(&managerList)
	if len(managerList) > 0 {
		return errors.New("此管理员已存在")
	}
	return nil
}

// GetManagerDetailById 通过管理员id获取管理员详细信息
func GetManagerDetailById(id int64) (manager models.Manager, err error) {
	manager.Id = id
	err = db.Preload("Role").Where("id = ?", id).Find(&manager).Error
	return
}
